package com.chinatechstar.file.service;

import java.io.File;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

/**
 * 文件信息的业务逻辑接口层
 *
 * @版权所有 上海至界信息科技有限公司
 */
public interface FileService {

    /**
     * 查询文件分页
     *
     * @param currentPage      当前页数
     * @param pageSize         每页记录数
     * @param originalFilename 文件名称
     * @param sorter           排序
     * @return
     */
    Map<String, Object> queryFile(Integer currentPage,
                                  Integer pageSize,
                                  String originalFilename,
                                  String sorter);

    /**
     * 按照文件编号查找文件
     *
     * @param fileId
     * @return
     */
    List<LinkedHashMap<String, Object>> queryFileById(String fileId);

    /**
     * 删除文件
     *
     * @param id 文件ID
     * @throws IOException
     */
    void deleteFile(Long[] id) throws IOException;


    /**
     * 上传文件
     *
     * @param file       文件资源
     * @param id         用户ID
     * @param uploadType 上传类型
     * @throws IOException
     */
    void uploadFile(MultipartFile file, Long id, String uploadType) throws IOException;

    /**
     * 上传文件
     *
     * @param file
     * @param id
     * @param uploadType
     * @throws IOException
     */
    long uploadFilePlus(MultipartFile file, Long id, String uploadType) throws IOException;

    /**
     * 上传用户头像
     *
     * @param file
     * @param userId
     * @throws IOException
     */
    String uploadProfile(MultipartFile file, String userId) throws IOException;

    /**
     * 上传农癌初始数据
     * @param file
     * @param userId
     * @return
     * @throws IOException
     */
    String uploadFile4DataInit(MultipartFile file, String userId) throws IOException;

    /**
     * 上传详情上报中的内镜,病理报告单
     * @param file
     * @param userId
     * @return
     * @throws IOException
     */
    String uploadFile4DetailReport(MultipartFile file, String userId) throws IOException;

    /**
     * 上传内镜诊断图片文件
     * @param file
     * @param userId
     * @return
     * @throws IOException
     */
    String uploadFile4EndoscopicDiagnosis(MultipartFile file, String userId) throws IOException;

    /**
     * 上传内镜诊断报告单
     * @param file
     * @param userId
     * @return
     * @throws IOException
     */
    String uploadFile4Report(MultipartFile file, String userId) throws IOException;

    /**
     * 查询文件类型名称
     *
     * @return
     */
    List<LinkedHashMap<String, Object>> queryFileTypeName();

    /**
     * 新增文件夹
     *
     * @param id               用户ID
     * @param originalFilename 文件夹名称
     * @param parentId         上级ID
     */
    void addFolder(Long id, String originalFilename, Long parentId);

    /**
     * 农癌:上传附件
     * @param file
     * @param userId
     * @return
     * @throws IOException
     */
    String uploadCerAttachmentFile(MultipartFile file,String userId) throws IOException;

    String saveCerAttachmentFile(String path,String fileName) throws IOException;

}
